'use strict'
const path = require('path')
const moment = require('moment');
const chalk = require('chalk')

console.log(chalk.bgCyan('\n\n>>>> ' + __filename))
console.log(chalk.redBright(process.APP_CONFIG))
// 项目根目录的绝对路径
process.APP_CONFIG = process.APP_CONFIG || {};
console.log(chalk.redBright(JSON.stringify(process.APP_CONFIG)))
process.APP_CONFIG.ROOT_PATH = process.APP_CONFIG.ROOT_PATH || path.join(process.cwd(), path.sep)
console.log(chalk.redBright(JSON.stringify(process.APP_CONFIG)))

console.log(chalk.green('process.env.NODE_ENV=' + process.env.NODE_ENV))
console.log(chalk.bgCyan('<<<< ' + __filename + '\n\n'))


function resolve(dir) {
  return path.join(__dirname, dir)
}

module.exports = {
  // 必须使用 http://localhost:9090/box 才能访问首页。
  // 这和 mockjs 监听时的 url 无关，与 Axios 访问的 url 也无关。这两个完全不用考虑该配置。
  // 也就说，mockjs 和 Axios 的 url 总是 /api/... 即可，完全不需要 /box/api/... 这种。
  publicPath: '/box',
  assetsDir: 'static',
  devServer: {
    port: 9090,
    open: false,
    //contentBase: "/",
    // hot: false,
    overlay: {
      warnings: false,
      errors: true
    },
    // before: require('./mock/index-env-'+ process.env.NODE_ENV +'.js')
    before: require('./mock')
    // 下面这种也可以。
    // before(app, server, compiler) {
    //   console.log("/vue.config.js before() app", app)
    //   console.log("/vue.config.js before() server", server)
    //   console.log("/vue.config.js before() compiler", compiler)
    //   app.get('/api/test/app/info', function (req, res) {
    //     res.json({
    //       code: 20000,
    //       message: 'success',
    //       source: 'test',
    //       data: {
    //         appName: 'APP_NAME',
    //         appVersion: 'v1.0.0',
    //         theme: 'THEME',
    //         time: moment().format()
    //       }
    //     });
    //   });
    // }
  },
  configureWebpack: {
    name: "vue.config.js中配置的name",
    // 但是 @ 不能用于 require("@/...")。
    resolve: {
      alias: {
        '@': resolve('src')
      }
    }
  },

  // HtmlWebpackPlugin 插件
  // https://blog.csdn.net/Dontla/article/details/147747488

  chainWebpack(config) {
    config.module
      .rule('vue')
      .use('vue-loader')
      .loader('vue-loader')
      .tap(options => {
        // options.compilerOptions.preserveWhitespace = true
        options.prettify = false
        return options
      })
      .end()
  }
}
